package src.com.foreknow.demo5;

import javax.lang.model.element.NestingKind;
import java.util.Scanner;

public class Bank {
    /**
     * 输出菜单
     */
    public static void menu(){
        System.out.println("***********欢迎登陆***********");
        System.out.println("*********中国人民银行**********");
        System.out.println("*********         版本1.0*****");
        System.out.println("------------------------------");
    }

    /**
     * 登录方法
     * @param user
     * @param pwd
     * @return
     */
    public static boolean login(String user,String pwd){
        Scanner input = new Scanner(System.in);
        for (int i = 3;i>0;i--){
            System.out.println("请输入账号：");
            String new_user=input.next();
            System.out.println("请输入密码：");
            String new_pwd = input.next();
            //判断参数与用户接收到的用户名和密码是否匹配
            if (user.equals(new_user) && pwd.equals(new_pwd)){
                //登陆成功
                System.out.println("登录成功");
                return true;
            }else {
                if (i-1 == 0){
                    System.out.println("密码错误3次，吞卡");
                    //退出系统
                    System.exit(0);
                }
                //显示用户还有几次机会
                System.out.println("用户名或密码错误，请重新输入 今日还有 " + (i-1) + "次机会");
            }
        }
        return false;
    }

    /**
     * 查询余额
     * @param money
     */
    public static void checkMoney(double money){
        System.out.println("您的余额为：" +"money" );
    }

    /**
     * 存款
     * @param money
     * @return
     */
    public static double setMoney(double money){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您要存款的金额");
        double addMoney = input.nextInt();
        if (addMoney > 10000){
            System.out.println("单次存款的金额超过1万元");
            return 0;
        }else if (addMoney < 0){
            System.out.println("存款金额错误");
            return 0;
        }else if (addMoney % 100 != 0){
            System.out.println("请输入100的整数倍");
            return 0;
        }else {
            System.out.println("存款成功,当前余额为：" +(money + addMoney) );
        }
        return addMoney;
    }

    /**
     * 取款
     * @param money
     * @return
     */
    public static double getMoney(double money){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您要取的金额");
        double subMoney = input.nextInt();
        if (subMoney >money){
            System.out.println("余额不足");
            return 0;
        }else if (subMoney > 3000){
            System.out.println("单词取款金额大于3000");
            return 0;
        }else if (subMoney < 0){
            System.out.println("取款金额错误");
            return 0;
        }else if (subMoney % 100 !=0 ){
            System.out.println("请输入100的整数倍");
            return 0;
        }else {
            System.out.println("取款成功，当前余额为：" + (money - subMoney));
            return subMoney;
        }
    }

    /**
     * 修改密码
     * @param pwd
     * @return
     */
    public static String changPwd(String pwd){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入旧密码：");
        String old_pwd = input.next();
        if (old_pwd.equals(pwd)){
            System.out.println("请输入新密码");
            String new_pwd=input.next();
            System.out.println("请在此输入新密码：");
            String confirm_pwd=input.next();
            if (new_pwd.equals(confirm_pwd)){
                System.out.println("密码修改成功");
                return new_pwd;
            }else {
                System.out.println("两次输入密码不一致，请重新输入");
                return pwd;
            }
        }else {
            System.out.println("旧密码输入错误");
        }
        return pwd;
    }


    /**
     * 判断用户是否继续（y、n）
     * 思考：如果用户输入的不是y也不是n，输入错误了。提示用户  输入错误 请重新输入
     */
    public static void decide(){
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续操作（y/n）");
        String choice = input.next();
        if (choice.equals("y")){
            return;
        }else if (choice.equals("n")){
            System.out.println("退出系统");
            System.exit(0);
        }else {
            //当输入错误的时候会执行else
            while (true){
                System.out.println("输入错误，请重新输入，是否继续（y/n）");
                String  repeat = input.next();
                if (repeat.equals("y")){
                    return;
                }else if (repeat.equals("n")){
                    System.out.println("退出成功");
                    System.exit(0);
                }
            }
        }
    }

    public static void main(String[] args) {
        //初始化用户的信息（用户名，密码，余额）
        String user = "admin";//用户名
        String pwd = "123";   //密码
        double money = 10000; //余额
        Scanner input = new Scanner(System.in);
        //显示菜单 调用menu（）方法
        menu();
        //登录 调用 login（）方法
        boolean isRight= login(user,pwd);
        //登录成功 可以循环操作
        while(isRight){
            //循环操作
            while(true){
                System.out.println("1.查询余额  2.存款  3.取款  4.修改面  5.退出");
                System.out.println("请选择菜单：");
                int choice = input.nextInt();
                switch (choice){
                    case 1:
                        //查询余额 checkMoney
                        checkMoney(money);
                        //是否继续(y/n)
                        decide();
                        break;
                    case 2:
                        //存款   setMoney
                        money+=setMoney(money);
                        decide();
                        break;
                    case 3:
                        //取款   getMoney
                        money-=getMoney(money);
                        decide();
                        break;
                    case 4:
                        //修改密码 changePwd
                        String str = changPwd(pwd);
                        System.out.println("当前密码为：" + str);
                        decide();
                        break;
                    case 5:
                        //退出
                        System.out.println("系统推出");
                        System.exit(0);
                        break;
                    default:
                        System.out.println("非法操作");
                        break;

                }
            }
        }
    }



}






















